package com.tinfeng.uplevel;

// 实现Runnable 多线程类
public class JavaRunnable implements Runnable{

    private int i = 6;

    @Override
    public void run() {
        for (int j = 1; j <=5 ; j++) {
            System.out.println(Thread.currentThread().getName()+"执行第"+j+"次");
            try {
                // 缓一缓
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

//    @Override
//    public void run() {
//        while (i>0) {
//            System.out.println(Thread.currentThread().getName()+"i=" +i); // 这样获取线程名称
//            i--;
//        }
//    }

    public static void main(String[] args) {
        // 创建两个实现Runnable 实现类的实例
        JavaRunnable javaRunnable1 = new JavaRunnable();
        JavaRunnable javaRunnable2 = new JavaRunnable();
        // 创建两个线程对象
        Thread thread1 = new Thread(javaRunnable1,"线程1");
        Thread thread2 = new Thread(javaRunnable2, "线程2");
        thread1.start();
        thread2.start();
    }


    /**
     * Runnable 接口
     * 2.2.1 为什么需要 Runnable 接口
     * 通过实现 Runnable 接口的方案来创建线程，要优于继承 Thread 类的方案，主要有以下原因：
     *
     * Java 不支持多继承，所有的类都只允许继承一个父类，但可以实现多个接口。如果继承了 Thread 类就无法继承其它类，这不利于扩展；
     * 继承 Thread 类通常只重写 run() 方法，其他方法一般不会重写。继承整个 Thread 类成本过高，开销过大。
     */
}
